# coding:utf-8
import pandas as pd
from datetime import datetime

# 读取文件
dou1 = pd.read_excel(r'G:\工作\每日\抖音1.xlsx', dtype={'商品ID': str, '达人昵称': str, '选购商品': str})
dou2 = pd.read_excel(r'G:\工作\每日\抖音2.xlsx', dtype={'商品ID': str, '达人昵称': str, '选购商品': str})
dou3 = pd.read_excel(r'G:\工作\每日\抖音3.xlsx', dtype={'商品ID': str, '达人昵称': str, '选购商品': str})
dou4 = pd.read_excel(r'G:\工作\每日\抖音4.xlsx', dtype={'商品ID': str, '达人昵称': str, '选购商品': str})


# 提取对应列
dou1_date = dou1.loc[
    :, ['商品ID', '选购商品', '商家编码', '商品数量', '订单应付金额', '订单状态', '售后状态', '流量来源', '达人昵称',
        '广告渠道', '流量类型', '流量渠道', '流量体裁', '订单提交时间', '平台实际承担优惠金额', '达人实际承担优惠金额']]
dou1_date['平台'] = '抖音1'

dou2_date = dou2.loc[
    :, ['商品ID', '选购商品', '商家编码', '商品数量', '订单应付金额', '订单状态', '售后状态', '流量来源', '达人昵称',
        '广告渠道', '流量类型', '流量渠道', '流量体裁', '订单提交时间', '平台实际承担优惠金额', '达人实际承担优惠金额']]
dou2_date['平台'] = '抖音2'

dou3_date = dou3.loc[
    :, ['商品ID', '选购商品', '商家编码', '商品数量', '订单应付金额', '订单状态', '售后状态', '流量来源', '达人昵称',
        '广告渠道', '流量类型', '流量渠道', '流量体裁', '订单提交时间', '平台实际承担优惠金额', '达人实际承担优惠金额']]
dou3_date['平台'] = '抖音3'

dou4_date = dou4.loc[
    :, ['商品ID', '选购商品', '商家编码', '商品数量', '订单应付金额', '订单状态', '售后状态', '流量来源', '达人昵称',
        '广告渠道', '流量类型', '流量渠道', '流量体裁', '订单提交时间', '平台实际承担优惠金额', '达人实际承担优惠金额']]
dou4_date['平台'] = '抖音4'

dou = pd.concat([dou1_date, dou2_date, dou3_date, dou4_date])

dou['订单应付金额加优惠'] = dou['订单应付金额'] + dou['平台实际承担优惠金额'] + dou['达人实际承担优惠金额']
dou_date = dou.loc[:, ['商品ID', '选购商品', '商家编码', '商品数量', '订单应付金额加优惠', '订单状态', '售后状态',
                       '订单应付金额加优惠', '流量来源', '达人昵称', '广告渠道', '流量类型', '流量渠道', '流量体裁',
                       '订单提交时间', '平台']]
dou_date.columns = ['商品ID', '选购商品', '商家编码', '商品数量', '订单应付金额', '订单状态', '售后状态', '退款金额',
                    '流量来源', '达人昵称', '广告渠道', '流量类型', '流量渠道', '流量体裁', '订单提交时间', '平台']

dou_date['订单提交时间'] = pd.to_datetime(dou_date['订单提交时间'])
dou_date['日期'] = dou_date['订单提交时间'].map(lambda x: datetime.date(x))
date_concat_s = dou_date[(dou_date['订单应付金额'] >= 0.01)]
date_concat_ss = date_concat_s[(date_concat_s['商家编码'] != '抖音直播间赠品')]
# ['商家编码']去空格
date_concat_ss['商品ID'] = date_concat_ss['商品ID'].str.strip()
date_concat_ss['商家编码'] = date_concat_ss['商家编码'].str.strip()
date_concat_ss1 = date_concat_ss.copy()


def f(x, y, z, w, p):  # x:选购商品 y:达人昵称 z:流量来源 w:广告渠道
    if y == '宛禾米线官方旗舰店' or ('z1' in x) or ('Z1' in x):
        return '自播间1.0'
    elif y == '宛禾米线速食官方旗舰店' or y == '宛禾米线' or y == '宛禾速食官方旗舰店' or y == '宛禾食品' or y == '宛禾速食直播间' or (
            'z3' in x) or ('Z3' in x):
        return '自播间3.0'
    elif ('wzm' in x):
        return '窝子面直播间'
    elif y == '宛禾食品旗舰店' or ('z5' in x) or ('Z5' in x) or ('zb' in x):
        return '自播间5.0'
    elif y == '宛禾速食旗舰店' or y == '宛禾食品旗舰店甄选号' or ('z6' in x) or ('Z6' in x):
        return '自播间6.0'
    elif y == '宛禾官方旗舰店' or ('z8' in x) or ('Z8' in x):
        return '自播间8.0'
    elif y == '宛禾米线速食旗舰店' or ('lsf' in x):
        return '螺蛳土豆粉直播间'
    elif p == '抖音1' and ('dsp' in x):
        return '自播间1.0'
    elif p == '抖音2' and ('dsp' in x):
        return '自播间5.0'
    elif p == '抖音3' and ('dsp' in x):
        return '自播间8.0'
    elif p == '抖音4' and ('dsp' in x):
        return '螺蛳土豆粉直播间'
    elif pd.notnull(y):
        return '达人分发'
    elif z == '精选联盟':
        return '达人分发'
    elif w == '商品卡':
        return '超级商品卡'
    else:
        return '自然单'


date_concat_ss1['渠道'] = list(
    map(f, list(date_concat_ss1['选购商品']), list(date_concat_ss1['达人昵称']), list(date_concat_ss1['流量来源']),
        list(date_concat_ss1['广告渠道']), list(date_concat_ss1['平台'])))

date_concat_sss = date_concat_ss[
    (date_concat_ss['订单状态'] == '已发货') | (date_concat_ss['订单状态'] == '部分发货') | (
                date_concat_ss['订单状态'] == '待发货') | (date_concat_ss['订单状态'] == '已完成') | (
                date_concat_ss['订单状态'] == '已支付')]
date_concat_sss = date_concat_sss[
    (date_concat_sss['售后状态'] != '退款成功') & (date_concat_sss['售后状态'] != '退款完成') & (
                date_concat_sss['售后状态'] != '已全额退款') & (date_concat_sss['售后状态'] != '(锁定)等待确认收货') & (
                date_concat_sss['售后状态'] != '(删除)等待出库') & (
                date_concat_sss['售后状态'] != '(删除)等待确认收货') & (date_concat_sss['售后状态'] != '售后完成')]

# 筛选退款单
date_concat_td = date_concat_ss1[
    (date_concat_ss1['售后状态'] == '退款成功') | (date_concat_ss1['售后状态'] == '退款完成') | (
                date_concat_ss1['售后状态'] == '已全额退款')]

# 各渠道单量，销售额
# 抖音各渠道销售情况
date_concat_sss1 = date_concat_ss1[
    (date_concat_ss1['订单状态'] == '已发货') | (date_concat_ss1['订单状态'] == '部分发货') | (
                date_concat_ss1['订单状态'] == '待发货') | (date_concat_ss1['订单状态'] == '已完成') | (
                date_concat_ss1['订单状态'] == '已支付')]
date_concat_sss1 = date_concat_sss1[
    (date_concat_sss1['售后状态'] != '退款成功') & (date_concat_sss1['售后状态'] != '退款完成') & (
                date_concat_sss1['售后状态'] != '已全额退款') & (
                date_concat_sss1['售后状态'] != '(锁定)等待确认收货') & (
                date_concat_sss1['售后状态'] != '(删除)等待出库') & (
                date_concat_sss1['售后状态'] != '(删除)等待确认收货') & (date_concat_sss1['售后状态'] != '售后完成')]
res_z = date_concat_sss1.groupby([date_concat_sss1['日期'], date_concat_sss1['平台'], date_concat_sss1['渠道']],
                                 as_index=False).agg(销售额=('订单应付金额', 'sum'), 单量=('商品数量', 'count'))
re_td_sale = date_concat_td['退款金额'].groupby(
    [date_concat_td['日期'], date_concat_td['平台'], date_concat_td['渠道']]).sum()
re = pd.merge(res_z, re_td_sale, on=['日期', '平台', '渠道'], how='left')
re.fillna(0, inplace=True)
re['总销售额'] = re['销售额'] + re['退款金额']
re.to_excel(r'G:\结果\抖音各渠道销售情况.xlsx')
